﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Linq;

namespace HRM
{
    public class LocalDB
    {
        public static DataTable dtBranch = null;
        public static DataTable dtDepartment = null;
        public static DataTable dtContractType = null;
        public static DataTable dtTableEmployee = null;

        public static DataTable Branch_GetAll()
        {
            //Định nghĩa 1 cái bảng giống với cái bảng trong DB
            DataTable dt = new DataTable();
            DataColumn dcol = null;
            dcol = new DataColumn("Branch_Code", typeof(string));
            dt.Columns.Add(dcol);
            dcol = new DataColumn("Branch_Name", typeof(string));
            dt.Columns.Add(dcol);
            dcol = new DataColumn("Branch_ID", typeof(int));
            dt.Columns.Add(dcol);

            DataTable dtRoot = new DataTable();
            dtRoot = dtBranch;

            if (dtRoot != null && dtRoot.Rows.Count > 0)
            {
                //Trích xuất dữ liệu từ dtRoot 
                DataRow[] dr1 = dtRoot.Select("", "Branch_Code ASC");

                //Gán các dòng dữ liệu trích ra được vào bảng mới tạo
                for (int i = 0; i < dr1.Length; i++)
                {
                    DataRow dr = dt.NewRow();
                    dr["Branch_Code"] = Convert.ToString(dr1[i]["Branch_Code"]);
                    dr["Branch_Name"] = Convert.ToString(dr1[i]["Branch_Name"]);
                    dr["Branch_ID"] = Convert.ToInt32(dr1[i]["Branch_ID"]);
                    dt.Rows.InsertAt(dr, i);
                }
            }
            return dt;
        }
        public static DataTable Branch_GetOne(string BranchID)
        {
            //Định nghĩa 1 cái bảng giống với cái bảng trong DB
            DataTable dt = new DataTable();
            DataColumn dcol = null;
            dcol = new DataColumn("Branch_Code", typeof(string));
            dt.Columns.Add(dcol);
            dcol = new DataColumn("Branch_Name", typeof(string));
            dt.Columns.Add(dcol);
            dcol = new DataColumn("Branch_ID", typeof(int));
            dt.Columns.Add(dcol);

            DataTable dtRoot = new DataTable();
            dtRoot = dtBranch;

            if (dtRoot != null && dtRoot.Rows.Count > 0)
            {
                //Trích xuất dữ liệu từ dtRoot 
                DataRow[] dr1 = dtRoot.Select("Branch_ID=" + BranchID, "Branch_Code ASC");                

                //Gán các dòng dữ liệu trích ra được vào bảng mới tạo
                for (int i = 0; i < dr1.Length; i++)
                {
                    DataRow dr = dt.NewRow();
                    dr["Branch_Code"] = Convert.ToString(dr1[i]["Branch_Code"]);
                    dr["Branch_Name"] = Convert.ToString(dr1[i]["Branch_Name"]);
                    dr["Branch_ID"] = Convert.ToInt32(dr1[i]["Branch_ID"]);
                    dt.Rows.InsertAt(dr, i);
                }
            }
            return dt;
        }
        public static DataTable Department_GetAllByBranch(string BranchID)
        {
            //Định nghĩa 1 cái bảng giống với cái bảng trong DB
            DataTable dt = new DataTable();
            DataColumn dcol = null;
            dcol = new DataColumn("Department_Name", typeof(string));
            dt.Columns.Add(dcol);
            dcol = new DataColumn("Department_Code", typeof(string));
            dt.Columns.Add(dcol);
            dcol = new DataColumn("Department_ID", typeof(int));
            dt.Columns.Add(dcol);
            dcol = new DataColumn("Department_BranchID", typeof(int));
            dt.Columns.Add(dcol);
            dcol = new DataColumn("Department_IsHRM", typeof(bool));
            dt.Columns.Add(dcol);

            DataTable dtRoot = new DataTable();
            dtRoot = dtDepartment;

            if (dtRoot != null && dtRoot.Rows.Count > 0)
            {
                //Trích xuất dữ liệu từ dtRoot 
                //DataRow[] dr1 = dtRoot.Select("Department_BranchID=" + BranchID + " AND Department_IsHRM=1", "Department_Name ASC");
                DataRow[] dr1 = dtRoot.Select("Department_BranchID=" + BranchID + " AND Department_IsHRM=1 AND DEPARTMENT_MASTERID = 0", "Department_Name ASC");
                //Gán các dòng dữ liệu trích ra được vào bảng mới tạo
                for (int i = 0; i < dr1.Length; i++)
                {
                    DataRow dr = dt.NewRow();
                    dr["Department_Name"] = Convert.ToString(dr1[i]["Department_Name"]);
                    dr["Department_Code"] = Convert.ToString(dr1[i]["Department_Code"]);
                    dr["Department_ID"] = Convert.ToInt32(dr1[i]["Department_ID"]);
                    dr["Department_BranchID"] = Convert.ToInt32(dr1[i]["Department_BranchID"]);
                    dr["Department_IsHRM"] = Convert.ToBoolean(dr1[i]["Department_IsHRM"]);
                    dt.Rows.InsertAt(dr, i);
                }
            }
            return dt;
        }
        public static DataTable Department_GetAllByMasterID(string MasterID)
        {
            //Định nghĩa 1 cái bảng giống với cái bảng trong DB
            DataTable dt = new DataTable();
            DataColumn dcol = null;
            dcol = new DataColumn("Department_Name", typeof(string));
            dt.Columns.Add(dcol);
            dcol = new DataColumn("Department_Code", typeof(string));
            dt.Columns.Add(dcol);
            dcol = new DataColumn("Department_ID", typeof(int));
            dt.Columns.Add(dcol);
            dcol = new DataColumn("Department_BranchID", typeof(int));
            dt.Columns.Add(dcol);
            dcol = new DataColumn("Department_MasterID", typeof(int));
            dt.Columns.Add(dcol);

            DataTable dtRoot = new DataTable();
            dtRoot = dtDepartment;

            if (dtRoot != null && dtRoot.Rows.Count > 0)
            {
                //Trích xuất dữ liệu từ dtRoot 
                DataRow[] dr1 = dtRoot.Select("Department_MasterID='" + MasterID + "'", "Department_Name ASC");

                //Gán các dòng dữ liệu trích ra được vào bảng mới tạo
                for (int i = 0; i < dr1.Length; i++)
                {
                    DataRow dr = dt.NewRow();
                    dr["Department_Name"] = Convert.ToString(dr1[i]["Department_Name"]);
                    dr["Department_Code"] = Convert.ToString(dr1[i]["Department_Code"]);
                    dr["Department_ID"] = Convert.ToInt32(dr1[i]["Department_ID"]);
                    dr["Department_BranchID"] = Convert.ToInt32(dr1[i]["Department_BranchID"]);
                    dr["Department_MasterID"] = Convert.ToInt32(dr1[i]["Department_MasterID"]);
                    dt.Rows.InsertAt(dr, i);
                }
            }
            return dt;
        }
        public static DataTable ContractType_GetAll()
        {
            //Định nghĩa 1 cái bảng giống với cái bảng trong DB
            DataTable dt = new DataTable();
            DataColumn dcol = null;
            dcol = new DataColumn("ContractType_ID", typeof(int));
            dt.Columns.Add(dcol);
            dcol = new DataColumn("ContractType_Name", typeof(string));
            dt.Columns.Add(dcol);
            dcol = new DataColumn("ContractType_ProbationSalary", typeof(decimal));
            dt.Columns.Add(dcol);
            dcol = new DataColumn("ContractType_Time", typeof(int));
            dt.Columns.Add(dcol);
            dcol = new DataColumn("ContractType_Insurance", typeof(bool));
            dt.Columns.Add(dcol);

            DataTable dtRoot = new DataTable();
            dtRoot = dtContractType;

            if (dtRoot != null && dtRoot.Rows.Count > 0)
            {
                //Trích xuất dữ liệu từ dtRoot 
                DataRow[] dr1 = dtRoot.Select("", "Branch_Code ASC");

                //Gán các dòng dữ liệu trích ra được vào bảng mới tạo
                for (int i = 0; i < dr1.Length; i++)
                {
                    DataRow dr = dt.NewRow();
                    dr["ContractType_ID"] = Convert.ToInt32(dr1[i]["ContractType_ID"]);
                    dr["ContractType_Name"] = Convert.ToString(dr1[i]["ContractType_Name"]);
                    dr["ContractType_ProbationSalary"] = Convert.ToDecimal(dr1[i]["ContractType_ProbationSalary"]);
                    dr["ContractType_Time"] = Convert.ToInt32(dr1[i]["ContractType_Time"]);
                    dr["ContractType_Insurance"] = Convert.ToDecimal(dr1[i]["ContractType_Insurance"]);
                    dt.Rows.InsertAt(dr, i);
                }
            }
            return dt;
        }

        public static DataTable Employee_GetAll()
        {
            //Định nghĩa 1 cái bảng giống với cái bảng trong DB
            DataTable dt = new DataTable();
            DataColumn dcol = null;
            dcol = new DataColumn("Employee_ID", typeof(int));
            dt.Columns.Add(dcol);
            dcol = new DataColumn("Employee_Code", typeof(string));
            dt.Columns.Add(dcol);
            dcol = new DataColumn("FullName", typeof(string));
            dt.Columns.Add(dcol);
            dcol = new DataColumn("Employee_CardNo", typeof(string));
            dt.Columns.Add(dcol);
            dcol = new DataColumn("Employee_DateOfBirth", typeof(DateTime));
            dt.Columns.Add(dcol);
            dcol = new DataColumn("Employee_SIBookNo", typeof(string));
            dt.Columns.Add(dcol);

            dcol = new DataColumn("Employee_BranchID", typeof(int));
            dt.Columns.Add(dcol);

            dcol = new DataColumn("Employee_IsQuited", typeof(bool));
            dt.Columns.Add(dcol);

            DataTable dtRoot = new DataTable();
            dtRoot = dtTableEmployee;

            if (dtRoot != null && dtRoot.Rows.Count > 0)
            {
                //Trích xuất dữ liệu từ dtRoot 
                DataRow[] dr1 = dtRoot.Select("", "Employee_FirstName ASC");

                //Gán các dòng dữ liệu trích ra được vào bảng mới tạo
                for (int i = 0; i < dr1.Length; i++)
                {
                    DataRow dr = dt.NewRow();
                    dr["Employee_ID"] = Convert.ToInt32(dr1[i]["Employee_ID"]);
                    dr["Employee_Code"] = Convert.ToString(dr1[i]["Employee_Code"]);
                    dr["FullName"] = Convert.ToString(dr1[i]["FullName"]).ToLower();
                    dr["Employee_CardNo"] = Convert.ToString(dr1[i]["Employee_CardNo"]);
                    dr["Employee_DateOfBirth"] = Convert.ToDateTime(dr1[i]["Employee_DateOfBirth"]).ToString("dd/MM/yyyy");
                    dr["Employee_SIBookNo"] = Convert.ToString(dr1[i]["Employee_SIBookNo"]);

                    dr["Employee_BranchID"] = Convert.ToInt32(dr1[i]["Employee_BranchID"]);
                    dr["Employee_IsQuited"] = Convert.ToBoolean(dr1[i]["Employee_IsQuited"]);

                    dt.Rows.InsertAt(dr, i);
                }
            }
            return dt;
        }
        public static DataTable Department_GetListByParameter(string Parameter)
        {
            DataTable retVal = null;
            DataTable dtRoot = new DataTable();
            dtRoot = dtDepartment;
            if (dtRoot != null && dtRoot.Rows.Count > 0)
            {
                var results = from myRow in dtRoot.AsEnumerable()
                              where (

                                    myRow.Field<string>("Department_Name").ToLower().Contains(Parameter)
                                    || myRow.Field<string>("Department_Code").ToLower().Contains(Parameter))
                              select myRow;

                if (results.Count() > 0)
                    retVal = results.CopyToDataTable();
                else
                    retVal = null;
            }
            return retVal;
        }
        public static DataTable Employee_GetListByParameter(string Parameter)
        {
            DataTable retVal = null;
            DataTable dtRoot = new DataTable();
            dtRoot = dtTableEmployee;
            if (dtRoot != null && dtRoot.Rows.Count > 0)
            {
                var results = from myRow in dtRoot.AsEnumerable()
                              where (
                                    
                                    myRow.Field<string>("FullName").ToLower().Contains(Parameter.ToLower())
                                    || myRow.Field<string>("Employee_SIBookNo").ToLower().Contains(Parameter.ToLower()))
                              select myRow;

                if (results.Count() > 0)
                    retVal = results.CopyToDataTable();
                else
                    retVal = null;
            }
            return retVal;
        }
    }
}
